﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Salon
{
    public partial class DictModel : Form
    {
        public DictModel()
        {
            InitializeComponent();
            dict = ServiceFactory.getDictService();
        }

        private IList<DictModelItem> list { get; set; }
        private DictService dict { get; set; }

        // metoda podpięta pod event TextChange elementu txtElem - 
        //      odblokowuje przycisk "Dodaj"
        //
        // cel: uniemozliwienie dodawania pustego elementu do listy
        //
        private void txtElem_TextChanged(object sender, EventArgs e)
        {
            if (this.txtElem.Text != "")
                this.btnAdd.Enabled = true;
            else
                this.btnAdd.Enabled = false;
        }

        // metoda podpięta pod event Click elementu lstView - 
        //      odblokowuje przycisk "Usuń"
        //
        // cel: uniemożliwia usunięcie niezaznaczonego elementu
        //
        private void lstView_ItemSelected(object sender, EventArgs e)
        {
            if (this.lstView.SelectedItem != null)
                this.btnDel.Enabled = true;
        }

        // metoda podpięta pod event Click elementu btnDel -
        //      blokujący przycisk "Usuń"
        //
        // cel: po usunięciu zaznaczonego elementu focus z listboxa,
        //      w tym momencie możliwość usuwania powinna zostać zablokowana
        //
        private void btnDel_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < list.Count; i++)
            {
                if (list[i].DictValue == (string)this.lstView.SelectedItem)
                {
                    dict.deleteModel(list[i]);
                    this.btnRefresh_Click(this, null);
                }
            }
            this.lstView.Items.Remove(this.lstView.SelectedItem);
            this.btnDel.Enabled = false;
        }

        private void btnRefresh_Click(object sender, EventArgs e)
        {
            list = dict.getModels(new Filter("active", 1).asList());
            lstView.Items.Clear();
            for (int i = 0; i < list.Count; i++)
            {
                lstView.Items.Add(list[i].DictValue);
            }
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            DictModelItem newitem = new DictModelItem();
            newitem.DictValue = this.txtElem.Text;
            dict.addModel(newitem);

            txtElem.Clear();
            btnAdd.Enabled = false;
            this.btnRefresh_Click(null, null);
        }
    }
}
